1) пересилання N послідовних байтів з однієї області пам'яті в іншу,
ORG 100H
SADR EQU 1000H ;Початкова адреса 1-ї області пам’яті
DADR EQU 2000H ;Початкова адреса 2-ї області пам’яті
N EQU 10 ;Кількість байтів, що потрібно передати
LXI h,SADR ;Завантажуємо адресу 1-ї області пам’яті
LXI d,DADR ;Завантажуємо адресу 2-ї області пам’яті
MVI b,N ;Завантажуємо в регістр В кількість елементів, ; ;щопотрібно передати
;Вхiднi данi передаємочерез регiстри
call peres ;Виклик підпрограми пересилання N
;послідовних байтів з однієї області пам'яті в
;іншу
HLT
l1: MOV a,m ;Перенесення числа з 1-ї області пам’яті в 2-у
STAX d ;Запис вмісту акумулятора в 1-у область пам’яті
INX h ;Інкрементування регістру H
INX d ; Інкрементування регістру D
DCR b ;Зменшуємо число елементів, що потрібно перенести
JNZ l1 ;Якщо число елементів нерінре “0” топереходимо на мітку
;L!, інакше — вихід з підпрограми
ret
2) пересилання послідовності байтів (до заданого) з однієї області в іншу,
ORG 100H
SADR EQU 1000H ;Початкова адреса 1-ї області пам’яті
DADR EQU 2000H ;Початкова адреса 1-ї області пам’яті
N EQU 10 ;Кількість байтів, що потрібно передати
LXI H, SADR ;Завантажуємо адресу 1-ї області пам’яті
LXI D, DADR ;Завантажуємо адресу 2-ї області пам’яті
MVI B, N ;Завантажуємо в регістр В кількість елементів,
;Вхiднi данi передаємочерез регiстри
CALL PERED ;Виклик підпрограми пересилання послідовності
;байтів (до заданого) з однієї області пам'яті в іншу
HLT
;підпрограма пересилання послідовності байтів (до заданого) з однієї області пам'яті в іншу
PERED MOV A, M ;Перенесення числа з 1-ї області пам’яті в 2-у
CMPI 07H : до числа 7H
STAX D ;Запис вмісту акумулятора в 1-у область пам’яті
INX h ;Інкрементування регістру H
INX d ; Інкрементування регістру D
JNZ PERED ;Якщо число елементів нерінре “0” топереходимо на
;мітку PERED, інакше — вихід з підпрограми
RET
3) обчислення суми однобайтових елементів масиву,
ORG 100H
SADR EQU 1000H :Початкова адреса масиву
N EQU 10 :Кількість елементів масиву
lxi h, SADR ;Завантажуємо адресу масиву
mvi b, N ;Завантажуємо кількість елементів масиву
;Вхiднi данi передаємо через регiстри
call SUMM ;Виклик підпрограми обчислення суми одиобайтових
;елементів масиву
hlt
; підпрограма обчислення суми одиобайтових елементів масиву
SUMM:
mvi a, 0 ;заносимо в аккумулятор “0”
l1:
mov C, M ;Занесення в регістр C елемент масиву
add C ;Сумуємо його з акумулятором
inx h ;Інкрементування регістру H
dcr b ;Зменшуємо число елементів
jnz l1 ;Якщо число елементів не рівне “0” топереходимо на мітку
;L!, інакше — вихід з підпрограми
RET
4) Обчислення контрольної суми області пам'яті шляхом додавання за модулем 2 старших і молодших тетрад кожного байту окремо; результат роботи програми — два байти;
ORG 100H
ADR EQU 1000H
N EQU 10
lxi h, ADR
mvi e, N
mvi b, 0fh
mvi c, 0fh
;Вхiднi данi передаємо через регiстри
CALL SUMM
HLT
SUMM: NOP
l2: mov a, m
mov b, a
xri 0fh
xra c
mov c, a
mov a, b
xri 0f0h
mov d, 4
l1: rrc
dcr d
jnz l1
xra b
mov b,a
inx h
dcr e
jnz l2
RET
5) додавання двох багатобайтовнх чисел;
ORG 100H
ADR1 EQU 1000H
ADR2 EQU 2000H
N EQU 10
lxi H, ADR1
lxi D, ADR2
mvi B, N
;Вхiднi данi передаємочерез регiстри
CALL DODAV
HLT
DODAV:
STC
CMC
PUSH PSW
L1:
POP PSW
LDAX D
ADC M
PUSH PSW
STAX D
INX H
INX D
DCR B
JNZ L1
RET
6) обчислення суми N двобайтових елементів масиву,
ORG 100H
ADR1 EQU 1000H
ADR2 EQU 2000H
N EQU 10
lxi H, ADR1
lxi D, ADR2
mvi B, N
;Вхiднi данi передаємочерез регiстри
CALL SUM
hlt
SUM: NOP
L1:
LDAX D
ADD M
STAX D
PUSH PSW
INX H
INX D
POP PSW
LDAX D
ADC M
STAX D
PUSH PSW
INX D
POP PSW
LDAX D
ADCI 0
STAX D
DCX D
DCX D
INX H
DCR B
JNZ L1
RET
7) порівняння двох чисел і запису в задану комірку пам'яті більшого;
ORG 100H
ADR1 EQU 1000H
N1 EQU 100
N2 EQU 200
MVI A...